import { api } from '@/api/request';
import { type Room } from "@/types/room";
import { type Family } from "@/types/family";

/**
 * sysRoom 相关的接口封装
 * CRUD操作（create 添加数据read读取数据 update 修改数据delete删除数据）
 * 1.增加房间 createRoom(new_room : Room)
 * 2.删除房间 deleteRoom(id : number)
 * 3.修改房间 updateRoom(update_room : Room)
 * 4.查询房间 readRoom(sys_user_id : number) 返回非嵌套对象数组
 * 5.查询房间 readFamilyRooms(sys_user_id : number) 返回嵌套对象数组
 */

/**
 * 增加房间
 * sys_room 管理页面调用
 * 后端使用GET请求
 * 必须填入房间名称和房间描述,家庭id由下拉选择
 * @param {Room} new_room 
 * @return 
 */
export async function createRoom(new_room : Room) {
	let res = await api<string>({
		method: 'GET',
		url: '/room/save',
		data: new_room
	})
	if (res.code == 200) {
		return res.data
	}
}

/**
 * 删除房间,根据id删除
 * sys_room 管理页面调用
 * @param {number} id 
 * @return 
 */
export async function deleteRoom(id : number) {
	let res = await api<string>({
		method: 'DELETE',
		url: '/room/deleteById/' + id
	})
	if (res.code == 200) {
		return res.data
	}
}

/**
 * 修改房间,根据 room 对象数据上传
 * sys_room 管理页面调用
 * @param {Room} update_room 
 * @return 
 */
export async function updateRoom(update_room : Room) {
	let res = await api<string>({
		method: 'GET',
		url: '/room/updateRoom',
		data: update_room
	})
	if (res.code === 200) {
		return res
	}
}

/**
 * 查询房间
 * 根据 sys_user_id查询
 * sys_room 管理页面调用,user页面调用,显示数量
 * 1.根据 sys_user_id 查询 sys_family 表,返回 List<family_ids>
 * 2.根据 family_ids 查询 sys_room 表,返回 room 数据
 * 以上两步使用后端接口完成 /room/listRoomByUserId
 * @return 返回值非嵌套对象数组
 */
export async function readRoom(sys_user_id : number) {
	const res = await api<Room[]>({
		method: 'GET',
		url: '/room/listRoomByUserId',
		data: {
			'sysUserId': sys_user_id
		}
	})
	if (res.code === 200) {
		return res.data                          // 数据返回成功
	}
}

/**
 * 查询房间
 * 根据 sys_user_id查询
 * sys_room 管理页面调用
 * @return 返回值为嵌套对象数组
 */
export async function readFamilyRooms(sys_user_id : number) {
	const res = await api<Family[]>({
		method: 'GET',
		url: '/room/listFamilyRoomListByUserId/' + sys_user_id
	})
	if (res.code === 200) {
		return res.data                          // 数据返回成功
	}
}